
// 封装处理数据的方法
function tranListToTree(list, rootValue) {
  var arr = []
  list.forEach((item) => {
    if (item.id === rootValue) {
      // 2、在判断是否有子级,利用递归
      const children = tranListToTree(list, item.id)
      if (children.length) {
        // 代表有子级
        item.children = children
      }
      // 1、先找一级
      arr.push(item)
    }
  })
  return arr
}

调用：   (先找一级的，在内部再去找子级)
    tranListToTree(arr , '')


例子：
const arr = [
      {
        name: '张三',
        id: 1,
        pid: ''
      },
      {
        name: '李四',
        id: 2,
        pid: ''
      },
      {
        name: '张三三',
        id: 3,
        pid: 1
      },
      {
        name: '张三三三',
        id: 4,
        pid: 3
      },
      {
        name: '李四四',
        id: 5,
        pid: 2
      },
    ]

处理后的数据：arr = [
     {
        name: '张三',
        id: 1,
        pid: '',
        children: [
	{
                    name: '张三三',
                    id: 3,
                    pid: 1
                 }
        ]
     },
     {
        name: '李四',
        id: 2,
        pid: '',
        children: [
	{
                    name: '李四四',
                    id: 3,
                    pid: 2
                 }
        ]
     }
]